package com.py.credit.dao;

import com.py.credit.entity.AuthorizeModel;
import com.py.framework.core.common.Page;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

/**
 * @author YaoS
 * @date 2019-05-13 15:18
 */
public interface AuthorizeModelDao {

    /**
     * 功能描述:查询所有模型
     *
     * @return 申请结果
     * @author YaoS
     * @date 19/5/13 14:09
     */
    List<HashMap<String, Object>> findModelList();

    /**
     * 功能描述: 新增授权模型
     *
     * @param model 授权模型
     * @author YaoS
     * @date 19/5/13 15:28
     */
    void addAuthorizeModel(AuthorizeModel model);

    /**
     * 功能描述: 分页查询模型信息
     *
     * @param modelName     模型名称
     * @param authorizeName 授权名称
     * @param page          分页参数
     * @return 查询结果
     * @author YaoS
     * @date 19/5/13 16:33
     */
    List<AuthorizeModel> selectModelListForPage(@Param("modelName") String modelName,
                                                @Param("authorizeName") String authorizeName,
                                                @Param("page") Page page);


    /**
     * 功能描述: 根据id查看详情
     *
     * @param authorizeId 授权id
     * @return AuthorizeModel
     * @author YaoS
     * @date 19/5/16 13:56
     */
    AuthorizeModel selectModelDetail(@Param("id") String authorizeId);

    /**
     * 功能描述: 根据ModelId查看详情
     *
     * @param modelId 授权id
     * @return AuthorizeModel
     * @author YaoS
     * @date 19/5/16 13:56
     */
    AuthorizeModel selectModel(@Param("id") String modelId);

    /**
     * 功能描述: 更新模型信息(建议不要使用)
     *
     * @param model 模型
     * @author YaoS
     * @date 19/5/13 16:34
     */
    void updateAuthorizeModel(AuthorizeModel model);

    /**
     * 功能描述: 删除模型绑定
     *
     * @param modelId 模型id
     * @author YaoS
     * @date 19/5/16 15:54
     */
    void deleteBind(@Param("modelId") String modelId);

    /**
     * 功能描述: 模型绑定
     *
     * @param modelId   模型id
     * @param recordIds 资源ids
     * @author YaoS
     * @date 19/5/16 14:52
     */
    void modelBind(@Param("modelId") String modelId, @Param("list") List<String> recordIds);

    /**
     * 功能描述: 根据id删除模型id
     *
     * @param id 模型id
     * @author YaoS
     * @date 19/5/13 16:37
     */
    void deleteAuthorizeModelById(@Param("id") Integer id);

    /**
     * 功能描述: 是否授权跑分查询
     *
     * @param modelId 模型id
     * @param token   机构token
     * @return 返回是否具有授权的权限
     * @author YaoS
     * @date 19/5/16 15:05
     */
    HashMap<String, Integer> selectAuthorize(@Param("token") String token, @Param("modelId") String modelId);

    /**
     * 功能描述: 查询是否可以删除
     *
     * @param id id
     * @return 查询结果
     * @author YaoS
     * @date 19/5/17 17:36
     */
    int selectCount(@Param("id") String id);

}
